import axios from 'axios'
// 导入vuex配置
import store from '@/store'
// 导入权限处理函数
import { auth } from '@/utils/utils.js'
// 配置请求拦截和响应拦截
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 添加请求头
    config.headers['Authorization'] = store.state.token
    // 在发送请求之前做些什么
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    const res = response.data
    // 如果响应的数据中有res.context.acl
    if (res.context) {
        if (res.context.acl) {
            // 将所有权限存起来
            // 将leftmenu中的所有auth_path组成一个数组
            let authArr = auth(res.context.acl)
            // 调用vuex中存储auth的方法存储
            store.commit('setAuth', authArr)
            store.commit('setLeftmenu', res.context.acl)
        }
        if (res.context.jwt) {
            store.commit('setToken', res.context.jwt)
        }
    }
    // 对响应数据做点什么
    return res;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});
// 导出axios
export default axios
